<script type='text/javascript'>
    let arr=[12,23,12,15,25,23,25,14,16]

    //方法一
    //缺点:两个for循环,性能不好
    function newArr(arr){
        for(var i=0;i<arr.length-1;i++){
            for(var j=i+1;j<arr.length;j++){
                if(arr[i]==arr[j]){
                    arr.splice(j,1)
                    j--
                }
            }
        }
        return arr
    }
    newArr(arr)
    

    //方法五:indexOf
    //缺点:性能不好,当前项删除,后面项的索引都要改变
    //改进方法,不用splice,而是创建一个新数组
        function indexFn(arr){
            
            for( let i=0;i<arr.length-1;i++){

                let currentNum=arr[i]
                let currentArr=arr.slice(i+1)
                if(currentArr.indexOf(currentNum)>-1){
                    arr.splice(i,1)
                    i--
                }
            }
            return arr
        }
        // console.log(indexFn(arr))

    //方法五:indexOf+新数组
    //缺点:在内存中新开了一个推内存
        function indexFn2(arr){
            let arr1=[]
            for(let i=0;i<arr.length;i++){
                if(arr1.indexOf(arr[i])==-1){
                    arr1.push(arr[i])
                }
            }
            return arr1
        }
        console.log(indexFn2(arr))


    //方法二:set (for of)
        function setFn(arr){
            let arr1=new Set(arr)
            let arr2=[]
            for(let i of arr1){
                arr2.push(i)
            }
            return arr2
        }
        // console.log(setFn(arr))

    //方法三：set (...)
        function setFn2(arr){
            let arr1=new Set(arr)
            let arr2 =[...arr1]
            return arr2      
        }
        // console.log(setFn2(arr))

    //方法四：set  (Array.from())
        function setFn3(arr){
            let arr1=new Set(arr)
            let arr2= Array.from(arr1)
            return arr2
        }
        // console.log(setFn3(arr))


</script>
